package com.example.demo.mapper;

import com.example.demo.model.UserInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description: 定义数据库操作的接口
 */
// MyBatis interface
// 加了 @Mapper 注解就声明该类是 MyBatis 的特殊接口
// 如果想要实现该接口，只能通过 .xml 文件
// 此时它的生命周期也就交给容器来托管
@Mapper
public interface UserMapper {
    // 根据多个用户 id 批量删除用户信息
    int deleteByList(List<Integer> list);

    // 根据用户 id 修改用户的某些信息
    int updateUserById(UserInfo userInfo);

    // 根据某些用户信息筛选满足条件的用户
    List<UserInfo> getListByUser(UserInfo userInfo);

    // 获得所有用户信息
    public List<UserInfo> getAll();

    // 根据姓名模糊查询
    public List<UserInfo> getListByName(@Param("username") String username);

    // 登录功能
    public UserInfo login(@Param("username") String username,
                          @Param("password") String password);

    // 对用户信息按照创建时间进行排序
    public List<UserInfo> getUserSort(@Param("order") String order);

    // 不需要返回，会直接填写到我们传的对象属性中
    public void addUser2(UserInfo userInfo);

    // 新增一条数据，返回受影响的行数
    public int addUser(UserInfo userInfo);

    // 根据用户 id 删除用户信息
    public int deleteUserById(@Param("id") Integer id);

    // 根据用户 id 修改用户的用户名
    public int updateNameById(@Param("id") Integer id,
                              @Param("username") String username);

    // 根据用户 id 查询用户
    // @Param注解的作用：声明我们这个参数在 xml 文件中叫做 id
    public UserInfo getUserById(@Param("id") Integer id);

}
